package com.anlogic.sdk.tools;

import java.util.List;
import java.util.Map;

import com.anlogic.sdk.tools.model.DocInfo;
import com.anlogic.sdk.tools.model.DriverInfo;
import com.anlogic.sdk.tools.model.LibraryInfo;
import com.anlogic.sdk.tools.model.OSInfo;

public interface IBspTool {
	String getChip();
	void setChip(String chip);
	
	void setPrintToConsole(boolean printToConsole);

	List<String> getOsNames();
	List<String> getDriverNames();
	List<String> getLibraryNames();
	List<String> getOsVersions(String name);
	List<String> getDriverVersions(String name);
	List<String> getLibraryVersions(String name);
	List<String> getLibDescFromCfgFile(String name);
	OSInfo getOsFromCfgFile(String name, String version);
	DriverInfo getDriverFromCfgFile(String name, String version);
	LibraryInfo getLibraryFromCfgFile(String name, String version);
	
	void reloadMssfile(String mssfile);
	
	String getProcessor(String mssfile);
	
	OSInfo getOsInfo(String mssfile);
	
	DocInfo getDocInfo(String mssfile);

	List<DriverInfo> getDriverList(String mssfile);
	
	DriverInfo getDriver(String mssfile, String name);

	void removeDriver(String mssfile, String name);

	void addDriver(String mssfile, String name, String version);

	void setDriverVersion(String mssfile, String name, String version);
	
	List<LibraryInfo> getLibraryList(String mssfile);
	
	LibraryInfo getLibrary(String mssfile, String name);

	void removeLibrary(String mssfile, String name);

	void addLibrary(String mssfile, String name, String version);

	void setLibraryVersion(String mssfile, String name, String version);
	
	void createDefaultMss(String mssfile, String chip, String proc, String os);
	
	void createMssFromHpf(String hpf, String mssfile, String chip, String proc, String os);

	void generteBsp(String hpf, String mssfile, String bspLocation);

	void regenerateBsp(String mssfile, String bspLocation);
	
	void updateBspHpf(String bspLocation, String hpf);
	
	List<String> getIncludePaths(String dir);
	
	List<String> getLinkScripts(String appLocation, String chip, String download);

	String getChipFromHpf(String hpf);
	
	List<String> getAppNames(String os, String chip, String proc);
	List<String> getLinuxAppNames(String chip, String proc);
	List<String> getDriverAppNames(String driverName, String os, String chip, String proc);
	String getAppDesc(String appName);
	List<String> getAppLibs(String appName);
	List<String> getAppExtraLibs(String mssfile, String appName);
	Map<String, String> getAppBuildProperties(String appName);
	void generateApp(String bspPath, String appName, String appLocation);
	void updateAppLinkscript(String bspLocation, String appLocation);
	
	void processAppMakefile(String bspLocation, String appLocation, String appName);
}
